dc0722265bb7f6438807bafa8c9edbb96ab50559,ambari-server/src/test/java/org/apache/ambari/server/controller/logging/LoggingSearchPropertyProviderTest.java,LoggingSearchPropertyProviderTest,testBasicCallWithNullTailLogURIReturned,#,238

Before Change


    expect(controllerMock.getAmbariMetaInfo()).andReturn(metaInfoMock).atLeastOnce();
    expect(controllerMock.getClusters()).andReturn(clustersMock).atLeastOnce();
    expect(clustersMock.getCluster("clusterone")).andReturn(clusterMock).atLeastOnce();
    expect(stackIdMock.getStackName()).andReturn(expectedStackName).atLeastOnce();
    expect(stackIdMock.getStackVersion()).andReturn(expectedStackVersion).atLeastOnce();
    expect(clusterMock.getCurrentStackVersion()).andReturn(stackIdMock).atLeastOnce();
    expect(loggingRequestHelperFactoryMock.getHelper(anyObject(AmbariManagementController.class), anyObject(String.class)))
      .andReturn(loggingRequestHelperMock).atLeastOnce();

    expect(metaInfoMock.getComponentToService(expectedStackName, expectedStackVersion, expectedComponentName)).andReturn(expectedServiceName).atLeastOnce();
    expect(metaInfoMock.getComponent(expectedStackName, expectedStackVersion, expectedServiceName, expectedComponentName)).andReturn(componentInfoMock).atLeastOnce();

    expect(componentInfoMock.getLogs()).andReturn(Collections.singletonList(logDefinitionMock)).atLeastOnce();
    expect(logDefinitionMock.getLogId()).andReturn(expectedLogSearchComponentName).atLeastOnce();

    mockSupport.replayAll();

    LoggingSearchPropertyProvider propertyProvider =
      new LoggingSearchPropertyProvider();

    propertyProvider.setAmbariManagementController(controllerMock);
    propertyProvider.setLogSearchDataRetrievalService(dataRetrievalServiceMock);
    propertyProvider.setLoggingRequestHelperFactory(loggingRequestHelperFactoryMock);

    Set<Resource> returnedResources =
      propertyProvider.populateResources(Collections.singleton(resourceMock), requestMock, predicateMock);

    // verify that the property provider attached
    // the expected logging structure to the associated resource

    assertEquals("Returned resource set was of an incorrect size",
      1, returnedResources.size());

    HostComponentLoggingInfo returnedLogInfo =
      captureLogInfo.getValue();

    assertNotNull("Returned log info should not be null",
      returnedLogInfo);

    assertEquals("Returned component was not the correct name",
      "hdfs_namenode", returnedLogInfo.getComponentName());

    assertEquals("Returned list of log file names for this component was incorrect",
      0, returnedLogInfo.getListOfLogFileDefinitions().size());

    // verify that the log level count information
    // was not added to the HostComponent resource
    assertNull(returnedLogInfo.getListOfLogLevels());

    mockSupport.verifyAll();
  }

After Change


    LoggingRequestHelperFactory loggingRequestHelperFactoryMock =
      mockSupport.createMock(LoggingRequestHelperFactory.class);

    if(authorizedForLogSearch) {
      AmbariMetaInfo metaInfoMock =
          mockSupport.createMock(AmbariMetaInfo.class);

      StackId stackIdMock =
          mockSupport.createMock(StackId.class);

      ComponentInfo componentInfoMock =
          mockSupport.createMock(ComponentInfo.class);

      LoggingRequestHelper loggingRequestHelperMock =
          mockSupport.createMock(LoggingRequestHelper.class);

      expect(dataRetrievalServiceMock.getLogFileNames(expectedLogSearchComponentName, "c6401.ambari.apache.org", "clusterone")).andReturn(Collections.singleton(expectedLogFilePath)).atLeastOnce();
      // return null, to simulate the case when the LogSearch service goes down, and the helper object
      // is not available to continue servicing the request.
      expect(dataRetrievalServiceMock.getLogFileTailURI(expectedAmbariURL + expectedSearchEnginePath, expectedLogSearchComponentName, "c6401.ambari.apache.org", "clusterone")).andReturn(null).atLeastOnce();

      expect(loggingRequestHelperFactoryMock.getHelper(anyObject(AmbariManagementController.class), anyObject(String.class)))
          .andReturn(loggingRequestHelperMock).atLeastOnce();

      expect(controllerMock.getAmbariServerURI(expectedSearchEnginePath)).
          andReturn(expectedAmbariURL + expectedSearchEnginePath).atLeastOnce();
      expect(controllerMock.getAmbariMetaInfo()).andReturn(metaInfoMock).atLeastOnce();

      expect(metaInfoMock.getComponentToService(expectedStackName, expectedStackVersion, expectedComponentName)).andReturn(expectedServiceName).atLeastOnce();
      expect(metaInfoMock.getComponent(expectedStackName, expectedStackVersion, expectedServiceName, expectedComponentName)).andReturn(componentInfoMock).atLeastOnce();

      expect(componentInfoMock.getLogs()).andReturn(Collections.singletonList(logDefinitionMock)).atLeastOnce();
      expect(logDefinitionMock.getLogId()).andReturn(expectedLogSearchComponentName).atLeastOnce();

      expect(stackIdMock.getStackName()).andReturn(expectedStackName).atLeastOnce();
      expect(stackIdMock.getStackVersion()).andReturn(expectedStackVersion).atLeastOnce();
      expect(clusterMock.getCurrentStackVersion()).andReturn(stackIdMock).atLeastOnce();
    }
    
    expect(controllerMock.getClusters()).andReturn(clustersMock).atLeastOnce();
    expect(clustersMock.getCluster("clusterone")).andReturn(clusterMock).atLeastOnce();
    expect(clusterMock.getResourceId()).andReturn(4L).atLeastOnce();

    mockSupport.replayAll();

    AuthorizationHelperInitializer.viewInstanceDAOReturningNull();
    SecurityContextHolder.getContext().setAuthentication(authentication);

    LoggingSearchPropertyProvider propertyProvider =
      new LoggingSearchPropertyProvider();

    propertyProvider.setAmbariManagementController(controllerMock);
    propertyProvider.setLogSearchDataRetrievalService(dataRetrievalServiceMock);
    propertyProvider.setLoggingRequestHelperFactory(loggingRequestHelperFactoryMock);

    Set<Resource> returnedResources =
      propertyProvider.populateResources(Collections.singleton(resourceMock), requestMock, predicateMock);

    // verify that the property provider attached
    // the expected logging structure to the associated resource

    assertEquals("Returned resource set was of an incorrect size",
      1, returnedResources.size());

    if(authorizedForLogSearch) {
      HostComponentLoggingInfo returnedLogInfo =
          captureLogInfo.getValue();

      assertNotNull("Returned log info should not be null",
          returnedLogInfo);

      assertEquals("Returned component was not the correct name",
          "hdfs_namenode", returnedLogInfo.getComponentName());

      assertEquals("Returned list of log file names for this component was incorrect",
          0, returnedLogInfo.getListOfLogFileDefinitions().size());

      // verify that the log level count information
      // was not added to the HostComponent resource
      assertNull(returnedLogInfo.getListOfLogLevels());
    }
    else {
      assertFalse("Unauthorized user should not be able to retrieve log info", captureLogInfo.hasCaptured());